perm filename ITALL.MF[MF,SYS]3 blob
sn#798082 filedate 1985-07-09 generic text, type C, neo UTF8
COMMENT ā VALID 00028 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 % Computer Modern Italic lower case:
C00004 00003 cmchar "Italic letter a"
C00006 00004 cmchar "Italic letter b"
C00008 00005 cmchar "Italic letter c"
C00010 00006 cmchar "Italic letter d"
C00012 00007 cmchar "Italic letter e"
C00014 00008 cmchar "Italic letter f"
C00017 00009 cmchar "Italic letter g"
C00019 00010 cmchar "Italic letter h"
C00020 00011 cmchar "Italic letter i"
C00022 00012 cmchar "Italic letter j"
C00024 00013 cmchar "Italic letter k"
C00026 00014 cmchar "Italic letter l"
C00027 00015 cmchar "Italic letter m"
C00029 00016 cmchar "Italic letter n"
C00030 00017 cmchar "Italic letter o"
C00031 00018 cmchar "Italic letter p"
C00033 00019 cmchar "Italic letter q"
C00035 00020 cmchar "Italic letter r"
C00037 00021 cmchar "Italic letter s"
C00039 00022 cmchar "Italic letter t"
C00040 00023 cmchar "Italic letter u"
C00042 00024 cmchar "Italic letter v"
C00044 00025 cmchar "Italic letter w"
C00046 00026 cmchar "Italic letter x"
C00049 00027 cmchar "Italic letter y"
C00051 00028 cmchar "Italic letter z"
C00053 ENDMK
Cā;
% Computer Modern Italic lower case:
% This lower-case italic alphabet was prepared by D. E. Knuth in December, 1979,
% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
% The programs were revised for the new \MF\ conventions in 1985.
% Character codes \0141 through \0172 are generated.
cmchar "Italic letter a";
beginchar("a",9u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,0); pos1(vair,90);
pos2(curve,180); pos3(vair,270);
pos4(stem,0); x4=x0; y4+.5stem=vround .98h;
x1=x3=.5[x0,x2]; lft x2r=round(1.5u-.5curve); rt x4r=round(w-2.5u+.5stem);
top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3];
filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
& pulled_arc.e(2,3) & super_arc.e(3,0); % bowl
x5=x4; x7=w; hook_out(5,6,7); % closing hook
filldraw circ_stroke z4e--z5e; % stem
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "Italic letter b";
beginchar("b",8u#,asc_height#,0);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup tiny.nib;
pos1(stem,0); pos2(stem,0); x1=x2;
lft x1l=round(1.5u-.5stem); top y1=h; y2=.5x_height;
filldraw stroke z1e--z2e; % stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
pickup fine.nib; pos2'(stem,-180); pos3(vair,-90);
pos4(curve,0); pos5(vair,90); pos0(hair,180);
z0=z2=z2'; x3=x5=.5[x2,x4]; rt x4r=round(w-1.5u+.5curve);
bot y3r=-oo; top y5r=x_height+oo; y4=y2;
filldraw stroke pulled_arc.e(2',3) & pulled_arc.e(3,4)
& pulled_arc.e(4,5) & super_arc.e(5,0); % bowl
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5); endchar;
cmchar "Italic letter c";
beginchar("c",8u#,x_height#,0);
italcorr if math_fitting:1/3x_height#*slant else:x_height#*slant-u# fi;
adjust_fit(0,0); pickup fine.nib;
pos0(flare,0); pos1(hair,0); pos2(vair,90);
pos3(curve,180); pos4(vair,270); pos5(hair,320);
x2=x4=.5(w+u); rt x1r=round(w-u);
lft x3r=round(1.5u-.5curve); x5r=good.x(w-epsilon); x6=x5;
y1=.5[bar_height,h]; top y2r=h+oo; bulb(2,1,0); % bulb
bot y4r=-oo; y3=.5[y2,y4]; top y5l=vround .5bar_height; y6=bar_height;
path p; p=z4{right}..z5..z6;
filldraw stroke pulled_arc.e(2,3)
& pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Italic letter d";
beginchar("d",9u#,asc_height#,0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,
h#*slant+.5stem#-2u#) if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,0); pos1(vair,90);
pos2(curve,180); pos3(vair,270);
x0=x4; x1=x3=.5[x0,x2]; lft x2r=round(1.5u-.5curve);
x4+.5stem=round(w-2.5u+.5stem);
top y1r=x_height+oo; bot y3r=-oo; y0=y2=.5[y1,y3];
filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
& pulled_arc.e(2,3) & super_arc.e(3,0); % bowl
x5=x0; x7=w; hook_out(5,6,7); % closing hook
pickup tiny.nib; pos5'(stem,0); pos4(stem,0);
z5'=z5; top y4=h; filldraw stroke z4e--z5'e; % stem
sloped_serif.l(4,5',a,1/3,jut,serif_drop); % serif
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "Italic letter e";
beginchar("e",8u#,x_height#,0);
italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#);
adjust_fit(0,0); pickup fine.nib;
numeric heavy_hair; heavy_hair=round(.2[hair,stem]);
pos0(vair,-90); pos1(heavy_hair,0);
pos2(vair,90); pos3(curve,180);
pos4(vair,270); pos5(hair,320);
x0=rt x3l; rt x1r=round(w-1.5u+.5heavy_hair); x2=x4=.5(w+u);
lft x3r=round(1.5u-.5curve); x5r=good.x(w-epsilon); x6=x5;
y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo;
top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6;
filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3)
& pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Italic letter f";
beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#);
italcorr asc_height#*slant+.75u#;
adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
numeric theta; z88=(.5w-.5u,h); z89=(.5w+.5u,-d); theta=angle(z88-z89);
pos0(flare,0); pos1(hair,0); pos2(vair,90);
pos3(.5[hair,stem],180); pos4(stem,theta+90);
pos5(stem,theta-90); pos6(.5[hair,stem],0);
pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
rt x1r=round(w+.25u); lft x8r=round-.35u; x2=.6[x1,x4]; x7=.6[x8,x5];
y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
y4=.25[x_height,h]; y5=.5[-d,y4]; z4=whatever[z88,z89]; z5=whatever[z88,z89];
x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
bulb(2,1,0); bulb(7,8,9); % bulbs
filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
filldraw z4r--z5l--z5r--z4l--cycle; % stem
filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
pickup crisp.nib; pos20(bar,90); pos21(bar,90);
top y20r=top y21r=x_height;
lft x20=lft x4r-.5stem-u; rt x21=rt x4l+.5stem+1.5u;
filldraw stroke z20e--z21e; % crossbar
math_fit(desc_depth#*slant+u#,x_height#*slant);
penlabels(0,1,2,3,4,5,6,7,8,9,20,21,88,89); endchar;
cmchar "Italic letter g";
beginchar("g",8u#,x_height#,desc_depth#);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,0); pos1(vair,90);
pos2(curve,180); pos3(vair,270);
x0=x4; x1=x3=.5[x0,x2]; lft x2r=round(1.5u-.5curve);
x4+.5stem=round(w-1.5u+.5stem);
top y1r=h+oo; bot y3r=0; y0=y2=.5[y1,y3];
filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
& pulled_arc.e(2,3) & super_arc.e(3,0); % bowl
pos4(stem,0); y4+.5stem=vround .98h;
pos5(stem,0); x5=x4; y5=-1/3d;
pos6(vair,-90); pos7(hair,-180); pos8(flare,-180);
bot y6r=-d-oo; y8-.5flare=vround -.9d;
lft x8r=round(2u-.5flare); x6=x1; bulb(6,7,8); % bulb
filldraw circ_stroke z4e---z5e...{left}z6e; % stem and arc
math_fit(-min(.3x_height#*slant+.5curve#-u#,1.5u#-desc_depth#*slant),
ic#-1/3x_height#*slant); penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Italic letter h";
beginchar("h",9u#,asc_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup tiny.nib;
pos1(stem,0); pos2(stem,0); x1=x2;
lft x1l=round(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
filldraw circ_stroke z2e--z1e; % left stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
pickup fine.nib; x4+.5stem=round(w-2.5u+.5stem);
x5=x4-.25u; ital_arch(2,3,4); % arch
x7=w; hook_out(5,6,7)(skewed); % closing hook
filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar;
cmchar "Italic letter i";
beginchar("i",5u#,min(asc_height#,10/7x_height#+.5flare#),0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2u#);
adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u;
hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks
filldraw stroke z2e--z3e; % stem
pos8(flare,0); pos9(flare,90);
x8=.5w if not monospace:-.4(h-x_height)*slant fi; top y9r=h+1;
if bot y9l-top y1<slab: y9l:=min(y9r-2epsilon,y1+fine+slab); fi
x8=x9; y8=.5[y9l,y9r]; dot(8,9); % dot
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
penlabels(0,1,2,3,4,5,8,9); endchar;
cmchar "Italic letter j";
beginchar("j",5u#,min(asc_height#,10/7x_height#+.5flare#),desc_depth#);
italcorr h#*slant+.5stem#-u#;
adjust_fit(if monospace:2u#,.5u# else: 0,0 fi); pickup fine.nib;
x0=0; x2=x3; pos3(stem,0); lft x3l=round(w-1.5u-.5stem);
hook_in(0,1,2); % opening hook
pos4(vair,-90); pos5(hair,-180); pos6(flare,-180);
bot y3=-1/3d; bot y4r=-d-oo; y6-.5flare=-vround.9d;
lft x5r=round-.5u; x4=1/3(w-u);
filldraw stroke z2e---z3e...{left}z4e; % stem and arc
bulb(4,5,6); % bulb
pos8(flare,0); pos9(flare,90);
rt x8r=rt x2r if not monospace:-.6(h-x_height)*slant fi; top y9r=h+1;
if bot y9l-top y1<slab: y9l:=min(y9r-2epsilon,y1+fine+slab); fi
x8=x9; y8=.5[y9l,y9r]; dot(8,9); % dot
math_fit(desc_depth#*slant,x_height#*slant+.5stem#-u#);
penlabels(0,1,2,3,4,5,6,8,9); endchar;
cmchar "Italic letter k";
beginchar("k",8u#,asc_height#,0);
italcorr x_height#*slant;
adjust_fit(0,0); pickup tiny.nib;
pos1(stem,0); pos2(stem,0); x1=x2;
lft x1l=round(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
filldraw circ_stroke z2e--z1e; % left stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
pickup fine.nib; pos3(vair,90); x3=x1; y3=bar_height;
pos4(vair,90); x4=w-2u; top y4r=x_height+oo;
filldraw stroke z3e{right}..{right}z4e; % upper diagonal
pos5(hair,0); pos6(flare,0);
rt x5r=round(w-.5u); y5+.5flare=vround(bot y4l-.03x_height);
bulb(4,5,6); % bulb
pos7(stem,0); pos8(vair,90); pos9(hair,180);
x9+.5hair=round(w+.5hair-epsilon); y9=1/3x_height;
lft x7l=round(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo;
filldraw stroke z3e{right}...z7e{down}...z8e{right}...{up}z9e; % lower diagonal
math_fit(0,1/3x_height#*slant+.5hair#+.5u#);
penlabels(1,2,3,4,5,6,7,8,9); endchar;
cmchar "Italic letter l";
beginchar("l",4u#,asc_height#,0); l_width#:=4u#;
italcorr max(1/3x_height#*slant+.5hair#+.5u#,
asc_height#*slant+.5stem#-2u#) if math_fitting:+.5u# fi;
adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
x2-.5stem=round(1.5u-.5stem); x4=w; hook_out(2,3,4); % closing hook
pickup tiny.nib; pos1(stem,0); pos2'(stem,0); z2'=z2;
top y1=h; x1=x2; filldraw stroke z1e--z2e; % stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
math_fit(-.5u#,1/3x_height#*slant+.5hair#+u#); penlabels(1,2,3,4); endchar;
cmchar "Italic letter m";
beginchar("m",15u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(if monospace:-1.5u#,-2u# else: 0,0 fi); pickup fine.nib;
numeric shaved_stem; shaved_stem=mfudged.stem; save stem; stem=shaved_stem;
pos2(stem,0); x1=x2;
if monospace: pos1(stem,0); lft x1l=round(2.5u-.5stem); top y1=h;
else: x0=0; lft x2l=round(2.5u-.5stem);
hook_in(0,a,1); fi % opening hook
y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem
x4+.5stem=round(.5w+.5stem); ital_arch(2,3,4); % left arch
pos5(stem,0); y5=y2; x5=x4;
filldraw circ_stroke z5e--z4e; % middle stem
x7+.5stem=round(w-2.5u+.5stem); x8=x7-.25u; ital_arch(5,6,7); % right arch
if monospace: pos9(vair,90); x9=good.x(.5[x8,w]); bot y9l=0; y8=1/3h;
pos8(stem,0); filldraw stroke z8e{-u,-x_height}...{right}z9e;
else: x9=w; hook_out(8,b,9)(skewed); fi % closing hook
filldraw stroke z7e{down}..{-u,-x_height}z8e; % right stem
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
penlabels(0,a,1,2,3,4,5,6,7); endchar;
cmchar "Italic letter n";
beginchar("n",10u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup fine.nib;
x0=0; x1=x2; pos2(stem,0); lft x2l=round(2.5u-.5stem); y2-.5stem=-oo;
hook_in(0,a,1); % opening hook
filldraw circ_stroke z2e--z1e; % left stem
x4+.5stem=round(w-2.5u+.5stem); x5=x4-.25u; ital_arch(2,3,4); % arch
x7=w; hook_out(5,6,7)(skewed); % closing hook
filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
penlabels(0,a,1,2,3,4,5,6,7); endchar;
cmchar "Italic letter o";
beginchar("o",9u#,x_height#,0);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
x1=x3=.5w; lft x2r=round(1.5u-.5curve); x4=w-x2;
top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4); endchar;
cmchar "Italic letter p";
beginchar("p",9u#,x_height#,desc_depth#);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
x0=0; x2-.5stem=round(2.5u-.5stem); hook_in(0,1,2); % opening hook
pos4(hair,-180); pos5(vair,-90);
pos6(curve,0); pos7(vair,90);
x4=x2; rt x6r=round(w-1.5u+.5curve); x5=x7=.5[x4,x6];
bot y5r=-oo; top y7r=h+oo; y4=y6=.5[y5,y7];
filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6)
& pulled_arc.e(6,7) & super_arc.e(7,4); % bowl
pickup tiny.nib; pos2'(stem,0); pos3(stem,0);
z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem
dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif
math_fit(-min(2/3x_height#*slant-.5hair#-.5u#,
2u#-.5stem#-desc_depth#*slant),ic#); penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "Italic letter q";
beginchar("q",8u#,x_height#,desc_depth#);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,0); pos1(vair,90);
pos2(curve,180); pos3(vair,270);
x0=x4; x1=x3=.5[x0,x2]; lft x2r=round(1.5u-.5curve);
x4+.5stem=round(w-1.5u+.5stem);
top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3];
filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
& pulled_arc.e(2,3) & super_arc.e(3,0); % bowl
pickup tiny.nib; pos4(stem,0); pos5(stem,0);
x4=x5; x6=x5r; top y6=h+oo; bot y4=-d;
y5=ypart(((x4l,0)--(x4l,y6))intersectionpoint super_arc.r(0,1));
filldraw z6{2(x5l-x6),y5-y6}...z5l---z4l--z4r--cycle; % stem
dish_serif(4,5,a,1/3,jut,b,1/3,jut); % serif
math_fit(-.3x_height#*slant+.5curve#-u#,ic#-1/3x_height#*slant);
penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Italic letter r";
beginchar("r",5.5u#+max(1.75u#,flare#),x_height#,0);
italcorr x_height#*slant;
adjust_fit(if monospace:.25u#,.5u# else: 0,0 fi); pickup fine.nib;
x0=0; x2=x3; pos3(stem,0); lft x3l=round(2.5u-.5stem); y3-.5stem=-oo;
hook_in(0,1,2); % opening hook
filldraw circ_stroke z3e--z2e; % left stem
pos3'(hair,180); z3'=z3; pos4(vair,90);
pos5(hair,0); pos6(flare,0);
x4=5u; rt x5r=round(r-.5u); top y4r=h+oo;
filldraw stroke z3'e{up}...z4e{right}; % link
y6+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6); % bulb
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-.5u#);
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Italic letter s";
beginchar("s",5.25u#+max(1.75u#,flare#),x_height#,0);
italcorr x_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle
pos2(vair,-90); pos0(ess,theta); pos7(vair,-90);
x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo;
y0-.5ess=y7l+.55(y2r-y7l-ess);
lft x3l=round u; rt x6r=round(w-.5u);
x3r-x3l=x6r-x6l=round(.5[vair,ess])-fine;
ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
interim superness:=more_super;
filldraw stroke super_arc.e(2,3) & z3e{down}
..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
pos1(hair,0); pos10(round(.75[hair,flare]),0);
pos2'(vair,90); z2'=z2;
pos8(hair,-180); pos9(flare,-180);
rt x10r=round(w-u); lft x9r=round .5u; y10=.78h; y9=.25h;
bulb(2',1,10); bulb(7,8,9); % bulbs
math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Italic letter t";
beginchar("t",5.5u#,min(asc_height#,10/7x_height#),0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.25u#);
adjust_fit(if monospace:u#,u# else:0,0 fi); pickup fine.nib;
pos1(stem,0); lft x1l=round(2u-.5stem); y1+.5stem=h+oo;
x2=x1; x4=w; hook_out(2,3,4); % closing hook
filldraw circ_stroke z1e--z2e; % stem
pickup crisp.nib;
pos5(bar,90); pos6(bar,90);
lft x5=round-.75u; rt x6=round(w-.75u); top y5r=top y6r=x_height;
filldraw stroke z5e--z6e; % crossbar
math_fit(1.25u#-x_height#*slant,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Italic letter u";
beginchar("u",9.5u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
hook_in(0,1,2)(skewed); % opening hook
pos2'(stem,-180); z2'=z2;
pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5];
pos6(stem,0); rt x6r=round(w-2.5u+.5stem);
x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook
y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h;
filldraw stroke z2'e{-u,-x_height}
...super_arc.e(3,4)...{up}z5e; % left stem and arc
filldraw circ_stroke z6e--z7e; % right stem
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
cmchar "Italic letter v";
beginchar("v",8u#,x_height#,0);
italcorr x_height#*slant;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
hook_in(0,1,2)(skewed); % opening hook
pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0);
x4=.5w+u; rt x5r=round(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57h;
filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4)
..tension atleast 1.05..{up}z5e; % left stem and arc
v_bulb(5,6); % closing bulb
math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#);
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Italic letter w";
beginchar("w",12u#,x_height#,0);
italcorr x_height#*slant;
adjust_fit(if monospace:-1.5u#,-u# else: 0,0 fi);
pickup fine.nib; interim superness:=more_super;
{{forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
if monospace: pos1(vair,90); x1=good.x(.5[x0,x2]); top y1r=h; y2=2/3h;
pos2(stem,0); filldraw stroke z1e{right}...{-u,-x_height}z2e;
else: hook_in(0,1,2)(skewed); fi % opening hook
pos2'(stem,-180); z2'=z2;
pos4(vair,-90); pos5(hair,0);
x4=.6[x2,x5]; x5=x6=x7; pos6(stem,-180); pos7(stem,-180);
y3=.7[y4,y5]; bot y4r=-oo; y5=.57h;
rt x6l=round(rt x6l+.5w+.75u-x6); y6+.5stem=h; y7=y3;
pos8(vair,-90); pos9(hair,0);
x8=w-2.75u; rt x9r=round(w-.5u); bot y8r=-oo; y9=y5;
filldraw stroke z2'e{-u,-x_height}
...super_arc.e(3,4)...{up}z5e; % left stem and arc
filldraw circ_stroke z6e..super_arc.e(7,8)...{up}z9e; % middle stem and arc
v_bulb(9,10)}}; % closing bulb
math_fit(-2/3x_height#*slant+.5hair#+.5u#,3/4ic#);
penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Italic letter x";
beginchar("x",6.5u#+max(1.5u#,flare#),x_height#,0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant+.25u#);
adjust_fit(0,0); pickup fine.nib;
pos0(hair,180); pos1(vair,90); pos2(stem,0);
pos3(stem,-180); pos4(vair,-90); pos5(hair,0);
y0=y2=2/3h; y3=y5=1/3h; top y1r=h+oo; bot y4r=-oo;
rt x2r=round(.5w+.5stem-epsilon); x2=x3;
x0-.5hair=round-.5hair; x5+.5hair=round(w+.5hair-epsilon);
x1=.5[x0,x2]; x4=.5[x3,x5];
filldraw stroke z0e{up}...pulled_arc.e(1,2); % opening hook
filldraw z2l--z3r--z3l--z2r--cycle; % stem
filldraw stroke pulled_arc.e(3,4)...{up}z5e; % closing hook
pos3'(hair,180); pos6(hair,180); pos7(vair,90);
pos8(hair,0); pos9(flare,0);
x3'l=x6l=x3l; y3'=y3; y6=3/4h; x7=.5[x8,x2]; top y7r=h+oo;
rt x8r=round(w-.25u); y8+.5flare=vround(bot y7l-.03x_height);
filldraw stroke z3'e---z6e...{right}z7e; bulb(7,8,9); % upper link and bulb
pos2'(hair,0); pos16(hair,0); pos17(vair,-90);
pos18(hair,-180); pos19(flare,-180);
x2'l=x16l=x2l; y2'=y2; y16=1/4h; x17=.5[x18,x3]; bot y17r=-oo;
lft x18r=round.25u; y18-.5flare=vround(top y17l+.03x_height);
filldraw stroke z2'e---z16e...{left}z17e; bulb(17,18,19); % lower link and bulb
math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,16,17,18,19); endchar;
cmchar "Italic letter y";
beginchar("y",8.5u#,x_height#,desc_depth#);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
hook_in(0,1,2)(skewed); % opening hook
pos2'(stem,-180); z2'=z2;
pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5];
pos6(stem,0); rt x6r=round(w-1.5u+.5stem);
pos7(stem,0); pos8(vair,-90);
y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h;
y7=0; bot y8r=-d-oo; x5=x6=x7; x8=.5w;
pos9(hair,-180); pos10(flare,-180); y9=-.5d;
lft x9r=round(2.75u-.5flare); bulb(8,9,10); % bulb
filldraw stroke z2'e{-u,-x_height}
...super_arc.e(3,4)...{up}z5e; % left stem and arc
filldraw circ_stroke z6e---z7e...{left}z8e; % right stem and link
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant);
penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Italic letter z";
beginchar("z",5.5u#+max(1.5u#,stem#),x_height#,0);
italcorr x_height#*slant+.5hair#;
adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib;
pos1(hair,0); pos2(stem,-90);
pos3(vair,-90); pos4(hair,0);
lft x1l=round(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=round(w-.5u);
top y1=.78h; top y2l=top y4=h+oo; y3=.825h;
pos5(hair,0); pos6(vair,-90);
pos7(stem,-90); pos8(hair,0);
x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=round(w+.5hair-epsilon);
bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h;
pair p; p=(z4-z5) yscaled 2;
filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar
filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar
filldraw stroke z5e{p}..{p}z4e; % diagonal
math_fit(0,1/3x_height#*slant+.5hair#+.5u#);
penlabels(1,2,3,4,5,6,7,8); endchar;